package br.com.devmedia.temppos.controller;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;

import br.com.devmedia.temppos.domain.Setor;
import br.com.devmedia.temppos.persistence.CriaDomainSistema;
import br.com.devmedia.temppos.repository.SetorDao;

@ManagedBean(name = "setorController")
@ViewScoped
public class SetorController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private EntityManager entityManager;
	private SetorDao setorDao;
	private Setor setor;
	
	public SetorController() {
		this.entityManager = CriaDomainSistema.getEntityManager();
		this.setorDao = new SetorDao();
		this.setor = new Setor();
	}
	
	/***
	 * Responsavel por redirecionar a pagina para a lista de Setores. 
	 * 
	 * @return
	 */
	public String listarController() {
		System.out.println("Passou aqui...");
		return "listarSetor.xhtml?faces-redirect=true";
	}
	
	/***
	 * Responsavel por definir um novo setor. 
	 * 
	 * @return
	 */
	public String novoController() {
		this.setor = new Setor();
		return "formularioSetor?faces-redirect=true";
	}
	
	/***
	 * Responsavel por Cancelar um operacao da view. 
	 * 
	 * @return
	 */
	public String cancelarController() {
		return "listarSetor?faces-redirect=true";
	}
	
	/***
	 * Responsavel por Salvar um novo Setor. 
	 * 
	 * @return
	 */
	public String salvarController() {
		if(setorDao.salvar(setor)) {
			return "listarSetor?faces-redirect=true";
		} else {
			return "formularioSetor?faces-redirect=true"; 
		}
	}
	
	/***
	 * Responsavel por Altera um novo Setor. 
	 * 
	 * @return
	 */
	public String alterarController(Setor setorParametro) {
		this.setor = setorParametro;
		return "formularioSetor?faces-redirect=true";
	}
	
	/***
	 * Responsavel por Excluir um Setor. 
	 * 
	 * @return
	 */
	public String excluirController(Setor setorParamentro) {
		this.setorDao.excluir(setorParamentro);
		return "listaSetor?faces-redirect=true";
	}
	
	public EntityManager getEntityManager() {
		return entityManager;
	}

	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}

	public SetorDao getSetorDao() {
		return setorDao;
	}

	public void setSetorDao(SetorDao setorDao) {
		this.setorDao = setorDao;
	}

	public Setor getSetor() {
		return setor;
	}

	public void setSetor(Setor setor) {
		this.setor = setor;
	}
}
